var nums = [7,1,5,3,6,4,5,6,2,8,1,9];
var k = 5;

// var rotate = function(nums, k) {
// 	/*
// 		循环k次，将最后一个pop再unshift进去
// 		太简单粗暴（low），而且所需耗时太高，容易超时
// 	*/
//     while (k) {
// 		nums.unshift(nums.pop());
// 		console.log(nums);
// 		k--;
// 	}
// 	return nums;
// };

// var rotate = function(nums, k) {
// 	/*
// 		从数组尾部截取长度为k的数组，然后展开并放到头部
// 		注意：k大于nums.length的情况，将k取为 k % nums.length
// 	*/
// 	if(k>nums.length){ k = k % nums.length; }
//     nums.unshift(...nums.splice(-k));
//     return nums;
// };

var rotate = function(nums, k) {
	/*
		将数组延长k位并数组右移k位，然后数组的前k位赋值为对应的数组后k位，在剪去后k位
		注意：k大于nums.length的情况，将k取为 k % nums.length
	*/
	if(k>nums.length){ k = k % nums.length; }
	let len = nums.length;
	
    // nums.length += k; 因为在js中使用数组会自动分配，所以不需要定义length
	
	for(let i = len - 1; i >= 0; i--){
		nums[i + k] = nums[i];
	}
	for(let j = 0; j < k; j++){
		nums[j] = nums[len + j];
	}
	console.log(nums);
	nums.splice(len, k);
	return nums;
};
console.log(rotate(nums, k));